{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Interpolation with Radial Basis Functions"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import numpy.linalg as la\n",
        "import matplotlib.pyplot as pt"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "plot_x = np.linspace(-3, 3, 200)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "array([-1.45580534, -1.15687342, -0.81545651, -0.6171631 , -0.2209083 ,\n",
              "        0.19465148,  0.54697347,  0.78440928,  1.19182151,  1.52032072])"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "np.random.seed(20)\n",
        "centers = np.random.randn(10)*0.05 + np.linspace(-1.5, 1.5, 10)\n",
        "centers = np.sort(centers)\n",
        "centers"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "radius = 0.3"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7feae0471ef0>]"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEACAYAAACj0I2EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGTZJREFUeJzt3X2UnOV53/HvtRISCAlJIPS2QhIYWZIFPeA4Ar8kbAAj\nEWPkP9wG2T2lrUnaxmAfF6e4bU4llfac4Pxhu6WO6xPHSRxTJcUnBrexLGx1bGMjIBjZEqzQ8qKV\nVu+IFZLQC8ru1T/uGbEaze48M/O8zTO/zzl7NLN77zPXsKsft67nvp/H3B0REWl/XVkXICIi8VCg\ni4gUhAJdRKQgFOgiIgWhQBcRKQgFuohIQdQNdDP7hpkdMLNfjTHmv5lZn5ltMbPr4i1RRESiiDJD\n/yawYrQvmtntwLvcfRHwr4CvxVSbiIg0oG6gu/uTwOAYQ1YBf1ke+zQw1cxmxVOeiIhEFUcPvRvY\nPeL5nvLnREQkRXEEutX4nK4nICKSsvExHGMAuGLE83nA3loDzUxBLyLSBHevNXk+R9QZulF7Jg7w\nOPDPAMzsRuCIux8Yo6jCfqxZsybzGtrh/Q0OOt3dzhNPOFu2ODNmOLt3F+O95fVD76+9P6KqO0M3\ns0eAHuAyM9sFrAEmhGz2r7v735nZb5vZy8BbwL+I/OrSkTZsgOuvh1tvDc9vuy187p57sq1LpN3V\nDXR3/0SEMffGU450glIJbrnlnec33ww//KECXaRV2ikao56enqxLSFRc769UgpGHuuUW2LQJGviX\nZez0s2tvRX9/UVkj/ZmWX8zM03w9yZ99+2DZMnj9degaMZ246ip4/HG45prsahPJKzPDYzwpKhKL\nH/8Ybrrp3DCHMEv/0Y+yqUmkKBTokqrqdkvFzTeHtouINE+BLqmqzNCrfehDsHlz+vWIFIl66JKa\nU6dg2jQ4dgwuuODcr7nD1Kmwcydcemkm5YnklnrokjsvvwxXXnl+mAOYwdKl0Nubfl0iRaFAl9T0\n9sKSJaN/XYEu0hoFuqRm+/axA/0974EXX0yvHpGiUaBLarZvD7Pw0WiGLtIaBbqkRi0XkWRplYuk\nYngYpkyBvXvDapZahobCmEOH4OKL061PJM+0ykVyZWAgLFkcLcwBxo2DRYvgpZfSq0ukSBTokop6\n7ZaKpUt1YlSkWQp0SUW9FS4VS5eGsSLSOAW6pGLHDli8uP64K6+E115Lvh6RIlKgSyp27oSFC+uP\nW7gQ+vsTLkakoBTokopdu2D+/PrjFixQoIs0S8sWJXGVC2/198P06WOP/Yd/CEsWjx+vfc0XkU6k\nZYuSG0eOhD+nTas/dvx4mD07LHMUkcYo0CVx/f2h3WJ15xeB2i4izVGgS+J27QohHdWCBeEkqog0\nRoEuievvbzzQNUMXaZwCXRLXaKBr6aJIcxTokrhKDz0qzdBFmqNAl8Q100NXoIs0ToEuiWu05TJ/\nfli2ODycXE0iRaRAl0SdOgWDgzBnTvTvufDCsGZ9//7k6hIpIgW6JGrXLujuhq4Gf9PUdhFpnAJd\nErV7d2MnRCu6u8PdjUQkOgW6JGrv3hDOjZo7V4Eu0igFuiRq794Qzo1SoIs0ToEuiWol0Pfsib8e\nkSJToEuimg109dBFGqdAl0Sp5SKSHgW6JEqBLpKeSIFuZivNbLuZ7TCzB2p8/Qoz22RmvzCzLWZ2\ne/ylSrtxD6HcyKaiimnT4PRpeOut+OsSKaq6gW5mXcDDwApgGbDazJZUDftD4K/d/b3AauCrcRcq\n7eeNN2DSpPDRKDPN0kUaFWWGvhzoc/d+dz8DrAdWVY0ZBi4pP54GaH2CNN1uqVCgizRmfIQx3cDu\nEc8HCCE/0jpgo5l9BpgE3BpPedLOWg10rXQRaUyUQK91J0iver4a+Ka7f8nMbgT+itCeOc/atWvP\nPu7p6aGnpydSodJ+NEMXaU6pVKJUKjX8fVECfQAYeTWOeUD1X7NPEXrsuPtmM7vQzGa4++vVBxsZ\n6FJsCnSR5lRPdtetWxfp+6L00J8FrjazBWY2AbgLeLxqTD/lNouZLQUm1gpz6SxxBLp2i4pEVzfQ\n3X0IuBfYCLwArHf3XjNbZ2Z3lId9HvhdM9sCfBu4O6mCpX00e2GuCs3QRRoTpeWCu28AFld9bs2I\nx73Ah+ItTdqdZugi6dJOUUlMs5uKKubM0V2LRBqhQJdEDA/DgQMwe3bzx5g8Oew2PX48vrpEikyB\nLokYHISLL4aJE5s/hhnMmhX+xyAi9SnQJREHDoQwbpUCXSQ6BbokQoEukj4FuiRCgS6SPgW6JEKB\nLpI+BbokQoEukj4FuiQirkCfPVtr0UWiUqBLIjRDF0mfAl0SoUAXSZ8CXRKhQBdJnwJdYucOBw/G\nE+iXXAJnzsCJE60fS6ToFOgSuzffhAkT4KKLWj+Wtv+LRKdAl9jF1W6pUKCLRKNAl9gp0EWyoUCX\n2MUd6FqLLhKNAl1ipxm6SDYU6BI7BbpINhToEjsFukg2FOgSOwW6SDYU6BI7BbpINhToEjsFukg2\nFOgSK/ewxDDOQJ82DU6dgpMn4zumSBEp0CVWx45BVxdMnhzfMbX9XyQaBbrE6sCBsBEobgp0kfoU\n6BKruPvnFQp0kfoU6BIrBbpIdhToEisFukh2FOgSKwW6SHYU6BIrBbpIdhToEqukAn32bAW6SD0K\ndIlVkjN0XRNdZGwKdImVWi4i2VGgS6ySCvTp0+HEiXAJABGpLVKgm9lKM9tuZjvM7IFRxvwTM3vB\nzLaa2V/FW6a0g7fegqEhmDIl/mObwcyZcPBg/McWKYrx9QaYWRfwMHALsBd41swec/ftI8ZcDTwA\nvN/dj5rZjKQKlvyqzM7Nkjl+pe0yf34yxxdpd1Fm6MuBPnfvd/czwHpgVdWY3wX+h7sfBXD31+Mt\nU9pBUu2WCvXRRcYWJdC7gd0jng+UPzfSu4HFZvakmf3czFbEVaC0DwW6SLbqtlyAWv+A9hrHuRr4\nTWA+8FMzW1aZsUtnUKCLZCtKoA8QQrpiHqGXXj3mKXcfBnaa2UvAIuC56oOtXbv27OOenh56enoa\nq1hyK41A37kzueOL5EWpVKJUKjX8feZePdmuGmA2DniJcFJ0H/AMsNrde0eMWVH+3D8vnxB9DrjO\n3QerjuX1Xk/a16c/DUuWwH33JXP8Rx6Bxx+H9euTOb5IXpkZ7l53uUHdHrq7DwH3AhuBF4D17t5r\nZuvM7I7ymB8Ah83sBeBHwOerw1yKTy0XkWxFabng7huAxVWfW1P1/H7g/vhKk3aTRqBrHbrI6LRT\nVGKTdKDPnKkZushYFOgSm6QD/bLL4M034cyZ5F5DpJ0p0CUWp06Fj2nTknuNceNCqB86lNxriLQz\nBbrE4uDB0BJJatt/hU6MioxOgS6xSLrdUqFAFxmdAl1ioUAXyZ4CXWKhQBfJngJdYnHgQOihJ02B\nLjI6BbrEIs0ZujYXidSmQJdYpBXo2lwkMjoFusRCPXSR7CnQJRYKdJHsKdAlFmkF+uWXw+HD4WbU\nInIuBbq07MwZOHo0bMtP2gUXwNSpIdRF5FwKdGnZwYMwYwZ0pfTbpLaLSG0KdGlZWu2WCgW6SG0K\ndGmZAl0kHxTo0rK0A33mTG0uEqlFgS4t0wxdJB8U6NKygwcV6CJ5oECXlmmGLpIPCnRpmQJdJB8U\n6NIyBbpIPijQpWVZrXJxT+81RdqBAl1aMjQEb7wRdoqm5cILYdIkGBxM7zVF2oECXVry+uswfTqM\nH5/u66rtInI+Bbq0JO12S4U2F4mcT4EuLckq0DVDFzmfAl1aokAXyQ8FurREgS6SHwp0aYkCXSQ/\nFOjSkqwCffZs2Lcv/dcVyTMFurRk//4QrmmbM0eBLlJNgS4t2bcvhGvaFOgi51OgS0uyCvRZs+DQ\nobBTVUQCBbo07e234c030932XzFhAkybFkJdRIJIgW5mK81su5ntMLMHxhj3cTMbNrP3xlei5NX+\n/WHHZldG0wK1XUTOVfevopl1AQ8DK4BlwGozW1Jj3GTgPmBz3EVKPmXVbqlQoIucK8rcajnQ5+79\n7n4GWA+sqjHuQeAh4HSM9UmOKdBF8iVKoHcDu0c8Hyh/7iwzuw6Y5+5/F2NtknMKdJF8iRLoVuNz\nZ28tYGYGfAm4v873SMEo0EXyJcpVrAeA+SOezwP2jng+hdBbL5XDfTbwmJnd6e6/qD7Y2rVrzz7u\n6emhp6en8aolF/btg/e9L7vXnzMHSqXsXl8kKaVSiVITv9zmde7jZWbjgJeAW4B9wDPAanfvHWX8\n/wP+rbs/X+NrXu/1pH3ccQf83u/BnXdm8/pPPgl/8Afw1FPZvL5IWswMd6/b+ajbcnH3IeBeYCPw\nArDe3XvNbJ2Z3VHrW1DLpSPs3Qtz52b3+mq5iJyr7gw91hfTDL1Q5syBv/976O6uPzYJJ07ApZfC\nyZNgmkJIgcU2QxepZWgo3E80iystVkyaBBMn6mbRIhUKdGnKwYNhdpz2zaGrqe0i8g4FujQl6yWL\nFQp0kXco0KUpeQn07u5wclZEFOjSpKxXuFR0d8OePVlXIZIPCnRpysAAzJuXdRWhhoGBrKsQyQcF\nujQlL4GuGbrIOxTo0pS8BLpm6CLvUKBLUxToIvmjnaLSlKlTYedOmD492zqGhuCii+D48XBbOpEi\n0k5RScyxY3DmTLinZ9bGjQu7VbUWXUSBLk3Ysye0OvJy/ZR583RiVAQU6NKEvPTPK7q71UcXAQW6\nNCFvga4ToyKBAl0alrdA11p0kUCBLg3LW6Brhi4SKNClYQMD2d3UohadFBUJFOjSsLzN0HVSVCRQ\noEvDKssW86K7O6xDHx7OuhKRbCnQpSEnT8LRo3D55VlX8o6JE8Pdk7S5SDqdAl0asmsXXHEFdOXs\nN2fBAujvz7oKkWzl7K+l5N3OnbBwYdZVnG/hwlCbSCdToEtD8hromqGLKNClQf39+Qx0zdBFFOjS\noJ07w2w4bzRDF1GgS4Py2nLRDF1EgS4NymugL1gQVuDo/inSyRToEtnp03D4MMydm3Ul57v4Ypg0\nCQ4ezLoSkewo0CWyXbvCrsxx47KupLaFC9VHl86mQJfI8tpuqViwQH106WwKdIksr0sWKzRDl06n\nQJfINEMXyTcFukSW1zXoFVdeCa+9lnUVItlRoEtkr74KV12VdRWju/pq6OvLugqR7JinuHDXzDzN\n15N4zZgB27bB7NlZV1Lb6dNwySVw/DhccEHW1YjEx8xwd6s3TjN0iWRwMATmrFlZVzK6iRPDGnn1\n0aVTRQp0M1tpZtvNbIeZPVDj658zsxfMbIuZPWFmV8RfqmSprw8WLQKrO0fI1qJF8PLLWVchko26\ngW5mXcDDwApgGbDazJZUDfsF8Gvufh3wHeCP4y5UstXXB+9+d9ZV1Kc+unSyKDP05UCfu/e7+xlg\nPbBq5AB3/7G7nyo/3Qzk6J7wEocdO8LsN+8WLVKgS+eKEujdwO4RzwcYO7A/BXy/laIkfyotl7xT\noEsnGx9hTK2uac2lKmb2T4FfA24a7WBr1649+7inp4eenp4IJUjW+vrgvvuyrqI+BboUQalUolQq\nNfx9dZctmtmNwFp3X1l+/gXA3f2hqnG3Al8BftPdD49yLC1bbEPuMH16ONk4Y0bW1Yzt7bdhyhQ4\ndgwmTMi6GpF4xLls8VngajNbYGYTgLuAx6te7Hrga8Cdo4W5tK/XX4euLrjssqwrqW/CBJg3T0sX\npTPVDXR3HwLuBTYCLwDr3b3XzNaZ2R3lYV8ELgb+t5k9b2bfTaxiSV3lhGjelyxWaKWLdKooPXTc\nfQOwuOpza0Y8/nDMdUmOtMsJ0YqlS6G3Fz7ykawrEUmXdopKXdu2wbJlWVcR3TXXhJpFOo0CXera\nuhWuvTbrKqK75ppQs0in0cW5pK65c+Gpp/J96dyRjh0L15w5diy/t8sTaYQuziWxOHwY3noL5s/P\nupLopkwJgf7qq1lXIpIuBbqMaevW0MJolxUuFWq7SCdSoMuYtm1rr/55hU6MSidSoMuY2u2EaMW1\n1yrQpfMo0GVMlZZLu9EMXTqRVrnIqNxh6tSwjf7SS7OupjGnT8O0aeFOSxdemHU1Iq3RKhdp2Suv\nhEBvtzCHcDu6JUtgy5asKxFJjwJdRvX003DDDVlX0bwbbgjvQaRTKNBlVE8/DTfemHUVzVOgS6dR\noMuoNm9u7xn68uXwzDNZVyGSHp0UlZpOnQrXPz90CCZNyrqa5gwNhf7/K6/k/8YcImPRSVFpyfPP\nw+LF7RvmEK7j8r73wbPPZl2JSDoU6FJTu/fPK5YvVx9dOocCXWpq9/55xY03hitFinQC9dDlPO4w\nZw787GfwrndlXU1rBgfDZX8PHQpr00XakXro0rStW2Hy5PYPc4Dp08Mt6X7+86wrEUmeAl3Os3Ej\n3HZb1lXE58MfDu9JpOgU6HKejRthxYqsq4jPbbfBE09kXYVI8tRDl3OcPAkzZ8KePXDJJVlXE4+3\n34bLLw93MLrssqyrEWmceujSlJ/+FK67rjhhDjBhAvzGb2iWLsWnQJdz/O3fwkc+knUV8fvYx+DR\nR7OuQiRZarnIWW+/DXPnwnPPhaV+RTI4CAsXwq5d4ZLAIu1ELRdp2IYNYYlf0cIcwvLFnh747nez\nrkQkOQp0Oevb34ZPfjLrKpLziU/AI49kXYVIctRyEQDefBPmzy/2SpATJ6C7O2ycmjcv62pEolPL\nRRryta/BHXcUN8whXDny7rvhy1/OuhKRZGiGLpw8CVddFTYUXXtt1tUka9eusCzz1VfDTaRF2oFm\n6BLZn/85/PqvFz/MIbSVPvpR+JM/yboSkfhpht7hjh6Fa66Bv/mbYlz/PIreXrjpptBLnzUr62pE\n6os6Q1egd7hPfxpOn4Y//dOsK0nXF74Q2i9a9SLtQIEudf3kJ7B6NWzbFtZpd5ITJ0KL6Utfgjvv\nzLoakbGphy5j2rEDfud3wsy808IcwoqXb30L7rkHtmzJuhqReEQKdDNbaWbbzWyHmT1Q4+sTzGy9\nmfWZ2VNmNj/+UiUur74Kt98ODz4Y/uxUH/gAfPWrYbnmtm1ZVyPSurqBbmZdwMPACmAZsNrMllQN\n+xTwhrsvAr4MfDHuQttBqVTKuoS6vvc9eP/74f77w+y0Ee3w/hr18Y/DQw/BBz9YYv36cPu9Iiri\nz26kor+/qKLM0JcDfe7e7+5ngPXAqqoxq4C/KD9+FLglvhLbR15/qdzDLdhuvx0++1n4znfg93+/\n8ePk9f216pOfhLvuKvHgg/BbvwWbNsHwcNZVxauoP7uKor+/qMZHGNMN7B7xfIAQ8jXHuPuQmR0x\ns0vd/Y14ypSohodh/37o74dXXgl3vP/BD2D8+LCi5bHHwvXB5Vxz5sAvfxnW5H/uc3DkSLhr0wc+\nEO6teuWV4UqUXTrrJDkWJdBrnVmt/odp9RirMQYI/cqzB6kakffn9cbs3Blmd2nXePo0HD8ePo4c\nCZeHXbgwfCxfHtaYX389WN1z5J1t/PjQhrrnntBT37Qp3BTj61+H116DN94IN/6YNOncj/Hjw3/b\nRj7S9tJL4bLIRVX09xdV3WWLZnYjsNbdV5affwFwd39oxJjvl8c8bWbjgH3uPrPGsQraoRQRSVaU\nZYtRZujPAleb2QJgH3AXsLpqzPeAu4GngX8MVM1ToxckIiLNqRvo5Z74vcBGwknUb7h7r5mtA551\n9/8DfAP4lpn1AYcJoS8iIilKdaeoiIgkJ/Vz9mb2n83sl2b2vJltMLPZadeQJDP7opn1mtkWM/uO\nmV2SdU1xMbOPm9k2Mxsys/dmXU9c6m2ca2dm9g0zO2Bmv8q6liSY2Twz22RmL5rZVjP7TNY1xcXM\nJprZ0+Ws3Gpma+p+T9ozdDOb7O7Hy4/vA97j7v8m1SISZGa3ApvcfdjM/ohwAvnfZ11XHMxsMTAM\n/E/g8+7+i4xLall549wOwt6JvYRzRne5+/ZMC4uJmX0IOA78pbv/o6zriVt5Qjjb3beY2WTgOWBV\ngX5+k9z9RHmxyc+Az7j7M6ONT32GXgnzsosJAVEY7v5Dd6+8p81AYW525u4vuXsftZeytqsoG+fa\nlrs/CQxmXUdS3H2/u28pPz4O9BL2xRSCu58oP5xIOOc55gw8k20SZvZfzGwX8AngP2VRQ0r+JfD9\nrIuQMdXaOFeYQOgkZrYQuI6w2q4QzKzLzJ4H9gNPuPuzY41PJNDN7Akz+9WIj63lPz8K4O5/6O7z\ngW8D9yVRQ5Lqvb/ymP8InHH3trridpT3VjBRNs5JzpXbLY8Cn63qArQ1dx929+sJ/9K/wczeM9b4\nKOvQmyniwxGH/i/g/wJrk6gjKfXen5ndDfw2cHM6FcWngZ9dUQwAI68OOo/QS5c2YWbjCWH+LXd/\nLOt6kuDuR82sBKwEXhxtXBarXK4e8XQVoedVGGa2Evh3wJ3ufjrrehJUlD762Y1zZjaBsIfi8Yxr\niptRnJ9XLX8GvOjuX8m6kDiZ2Qwzm1p+fBFwKzDmyd4sVrk8CrybcDK0H/jX7r4v1SISVN5cNYGw\nwQpgs7s3cW3D/DGzjwH/HZgBHAG2uHvbX1G9/D/hr/DOxrk/yrik2JjZI0APcBlwAFjj7t/MtKgY\nmdkHgZ8AWwmtMgf+g7tvyLSwGJjZtYSr2HaVP/7a3f/rmN+jjUUiIsWgi4GKiBSEAl1EpCAU6CIi\nBaFAFxEpCAW6iEhBKNBFRApCgS4iUhAKdBGRgvj/y1w1cCVQRL0AAAAASUVORK5CYII=\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7feae2cf5f60>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "def radial_basis_function(x, i):\n",
        "    return np.exp(-(x-centers[i])**2/radius**2)\n",
        "\n",
        "pt.plot(plot_x, radial_basis_function(plot_x, 3))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7feae0412f28>]"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7feae2cf5908>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "def f(x): return x**3 - 3*x\n",
        "\n",
        "pt.plot(plot_x, f(plot_x))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Let's build a Vandermonde matrix at the centers:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "nodes = centers\n",
        "\n",
        "V = np.array([\n",
        "    radial_basis_function(nodes, i)\n",
        "    for i in range(len(centers))\n",
        "    ]).T"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Find the coefficients:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "coeffs = la.solve(V, f(nodes))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Find the interpolant:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7feae03853c8>"
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7feae0454518>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "interpolant = 0\n",
        "for i in range(len(centers)):\n",
        "    interpolant += coeffs[i] * radial_basis_function(plot_x, i)\n",
        "\n",
        "pt.figure(figsize=(8,8))\n",
        "pt.ylim([-5,5])\n",
        "pt.plot(plot_x, interpolant, label=\"Interpolant\")\n",
        "pt.plot(plot_x, f(plot_x), label=\"$f$\")\n",
        "pt.plot(centers, f(centers), \"o\")\n",
        "pt.legend(loc=\"best\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "* Play around with the radius of the RBFs\n",
        "* Play with node placement"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.5.1+"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}